package com.example.demo.demos.web;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import org.ddr.poi.latex.LaTeXRenderPolicy;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Administrator
 * @describe: TODO
 * @date 2025/2/19
 */
public class MyDemogs {

    public static void main(String[] args) {

        try {
//            /*文本*/
//            Map<String, Object> map = new HashMap<>();
//            map.put("no1", RandomUtil.randomString(5));
//            map.put("no2", RandomUtil.randomString(5));
//            map.put("no3", "广东XXX新材料有限公司");
//            map.put("no4", "定期检测");
//            map.put("no5", "2025年 02月17日");
//            map.put("no6", "佛山市南海区瀚天科技城B1区3号楼809-2-3-4、801");
//            map.put("no7", "432888");
//            map.put("no8", "8605-928374231");
//            map.put("no9", "小王");
//            map.put("no10", "校长");
//            map.put("no11", "校长");
//            map.put("no12", "校长");
//            map.put("no13", "校长");
//            map.put("no14", "校长");
//            map.put("no15", "校长");
//            map.put("no16", "校长");
//            map.put("no17", "法律、法规、规章及规范性文件");
//
//
//            //列表集合
//            List<String> varList = Arrays.asList("《中华人民共和国职业病防治法》，中华人民共和国主席令〔2002〕第60号，中华人民共和国主席令〔2018〕第24号修正；",
//                    "（2）《工作场所职业卫生管理规定》，中华人民共和国国家卫生健康委员会令第5号，2021年2月1日施行；","《用人单位职业健康监护监督管理办法》，国家安全生产监督管理总局令第49号，2012年6月1日施行；");
//
//            //自定义序号的样式为  a)  b)  c)
//            NumberingFormat.Builder builder = NumberingFormat.
//                    builder("(%{0})") //%{0}) 可以指定自己需要的样式
//                    .withNumFmt(NumFormat.DECIMAL);  //小写字母
//            NumberingFormat numberingFormat = builder.build(0);
//            Numberings.NumberingBuilder of = Numberings.of(numberingFormat);//a)  b)  c)
//            //列表 数据赋值
//            varList.forEach(of::addItem);
//            NumberingRenderData numberingRenderData = of.create();
//            map.put("no18",numberingRenderData);
//
//
//            // 定义各层级格式
//            NumberingFormat level0 = NumberingFormat.DECIMAL;
//            NumberingFormat level1 = NumberingFormat.LOWER_LETTER;
//            NumberingFormat level2 = NumberingFormat.LOWER_ROMAN;
//
//// 构建嵌套列表数据
//            List<NumberingItemRenderData> items = new ArrayList<>();
//            ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
//            paragraphRenderData.addText("Main Point 1");
//            items.add(new NumberingItemRenderData(0, paragraphRenderData));
//            items.add(new NumberingItemRenderData(1, paragraphRenderData));
//            items.add(new NumberingItemRenderData(1, paragraphRenderData));
//            items.add(new NumberingItemRenderData(2, paragraphRenderData));
//            items.add(new NumberingItemRenderData(0, paragraphRenderData));
//
//            NumberingRenderData nestedList = new NumberingRenderData(
//                    new NumberingFormat[] { level0, level1, level2 },
//                    items
//            );
//
//// 绑定到模板
//            XWPFTemplate template = XWPFTemplate.compile("template.docx").render(
//                    new HashMap<String, Object>() {{
//                        put("nestedList", nestedList);
//                    }}
//            );
//
//
//            XWPFTemplate.compile("D:\\word\\1.docx").render(map).writeToFile("D:\\word\\2.docx");
            LaTeXRenderPolicy laTeXRenderPolicy = new LaTeXRenderPolicy();
            Configure configure = Configure.builder()
                    .bind("math1", laTeXRenderPolicy)
                    .bind("math2", laTeXRenderPolicy)
                    .bind("math3", laTeXRenderPolicy)
                    .bind("math4", laTeXRenderPolicy)
                    .build();
            Map<String, Object> data = new HashMap<>(4);
            // https://www2.ph.ed.ac.uk/snuggletex/documentation/math-mode.html
            data.put("math1", "$$ x+2=3 $$");
            data.put("math2", "\\[ \\sum_{i=1}^{\\infty} \\frac{1}{n^s} \n" +
                    "= \\prod_p \\frac{1}{1 - p^{-s}} \\tag{1.1}\\]");
            data.put("math3", "Product $\\prod_{i=a}^{b} f(i) \\tag{\\textcircled{1}}$ inside text. $\\mathbb{N} \\mathbf{N} \\mathbb{Z} \\mathbf{Z} \\mathbb{D} \\mathbf{D} \\mathbb{Q} \\mathbf{Q} \\mathbb{R} \\mathbf{R} \\mathbb{C} \\mathbf{C}$");
            data.put("math4", "$\\lim_{x\\to\\infty} f(x)$");


            XWPFTemplate.compile("D:\\word\\11.docx",configure).render(data).writeToFile("D:\\word\\22.docx");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
